package com.algorithm.example.stack;

/**
 * <p>
 * 栈
 * </p>
 *
 * @author lzt
 * @version 1.0
 * @since 2024/1/25 12:05
 */
public interface Stack<E> {
    /**
     * 向栈顶压入元素
     * @param value - 待压入值
     * @return 压入成功返回true 否则返回false
     */
    boolean push(E value);

    /**
     * 从栈顶弹出元素
     * @return 栈非空返回栈顶元素，栈为空返回null
     */
    E pop();

    /**
     * 返回栈顶元素，不弹出
     * @return 空返回null，非空弹出栈顶元素
     */
    E peek();

    /**
     *  判断栈是否为空
     * @return 空返回true 否则返回false
     */
    boolean isEmpty();

    /**
     * 判断是否已满
     * @return 满返回true 否则返回false
     */
    boolean isFull();
}
